Mercurial > vim
annotate runtime/doc/gui_x11.txt @ 35784:43ea277664a6
Added tag v9.1.0613 for changeset 9dd6970e4bdf127bee6f35932e8926ac771024a9
author | Christian Brabandt <cb@256bit.org> |
---|---|
date | Wed, 24 Jul 2024 21:45:04 +0200 |
parents | 6fb237b639ac |
children | 5bf8db67cc8c |
rev | line source |
---|---|
35025
6fb237b639ac
runtime(doc): update documentation
Christian Brabandt <cb@256bit.org>
parents:
34244
diff
changeset
|
1 *gui_x11.txt* For Vim version 9.1. Last change: 2024 Apr 22 |
7 | 2 |
3 | |
4 VIM REFERENCE MANUAL by Bram Moolenaar | |
5 | |
6 | |
7 Vim's Graphical User Interface *gui-x11* *GUI-X11* | |
28303
9849df834f1d
patch 8.2.4677: the Athena GUI support is outdated
Bram Moolenaar <Bram@vim.org>
parents:
20753
diff
changeset
|
8 *Motif* |
7 | 9 1. Starting the X11 GUI |gui-x11-start| |
10 2. GUI Resources |gui-resources| | |
11 3. Shell Commands |gui-pty| | |
12 4. Various |gui-x11-various| | |
13 5. GTK version |gui-gtk| | |
14 6. GNOME version |gui-gnome| | |
856 | 15 7. KDE version |gui-kde| |
11 | 16 8. Compiling |gui-x11-compiling| |
17 9. X11 selection mechanism |x11-selection| | |
7 | 18 |
19 Other relevant documentation: | |
20 |gui.txt| For generic items of the GUI. | |
21 | |
22 | |
23 ============================================================================== | |
24 1. Starting the X11 GUI *gui-x11-start* *E665* | |
25 | |
26 Then you can run the GUI version of Vim in either of these ways: | |
27 gvim [options] [files...] | |
28 vim -g [options] [files...] | |
29 | |
30 So if you call the executable "gvim", or make "gvim" a link to the executable, | |
31 then the GUI version will automatically be used. Additional characters may be | |
32 added after "gvim", for example "gvim-5". | |
33 | |
34 You may also start up the GUI from within the terminal version by using one of | |
35 these commands: | |
36 :gui [++opt] [+cmd] [-f|-b] [files...] *:gu* *:gui* | |
37 :gvim [++opt] [+cmd] [-f|-b] [files...] *:gv* *:gvim* | |
38 The "-f" option runs Vim in the foreground. | |
39 The "-b" option runs Vim in the background (this is the default). | |
40 Also see |++opt| and |+cmd|. | |
41 | |
42 *gui-fork* | |
43 When the GUI is started, it does a fork() and exits the current process. | |
44 When gvim was started from a shell this makes the shell accept further | |
45 commands. If you don't want this (e.g. when using gvim for a mail program | |
46 that waits for gvim to exit), start gvim with "gvim -f", "vim -gf" or use | |
47 ":gui -f". Don't use "vim -fg", because "-fg" specifies the foreground | |
48 color. | |
49 | |
16380 | 50 When using "vim -f" and then ":gui", Vim will run in the foreground. The |
7 | 51 "-f" argument will be remembered. To force running Vim in the background use |
52 ":gui -b". | |
53 | |
54 "gvim --nofork" does the same as "gvim -f". | |
13857 | 55 |
56 When there are running jobs Vim will not fork, because the processes would no | |
57 longer be child processes. | |
3082 | 58 *E851* *E852* |
59 When starting the GUI fails Vim will try to continue running in the terminal. | |
7 | 60 |
61 If you want the GUI to run in the foreground always, include the 'f' | |
62 flag in 'guioptions'. |-f|. | |
63 | |
64 ============================================================================== | |
65 2. GUI Resources *gui-resources* *.Xdefaults* | |
66 | |
28303
9849df834f1d
patch 8.2.4677: the Athena GUI support is outdated
Bram Moolenaar <Bram@vim.org>
parents:
20753
diff
changeset
|
67 If using the Motif version of the GUI (not for the KDE, GTK+ or Win32 |
7 | 68 version), a number of X resources are available. You should use Vim's class |
69 "Vim" when setting these. They are as follows: | |
70 | |
71 Resource name Meaning ~ | |
72 | |
73 reverseVideo Boolean: should reverse video be used? | |
74 background Color of background. | |
75 foreground Color of normal text. | |
76 scrollBackground Color of trough portion of scrollbars. | |
77 scrollForeground Color of slider and arrow portions of scrollbars. | |
78 menuBackground Color of menu backgrounds. | |
79 menuForeground Color of menu foregrounds. | |
80 tooltipForeground Color of tooltip and balloon foreground. | |
81 tooltipBackground Color of tooltip and balloon background. | |
82 | |
83 font Name of font used for normal text. | |
84 boldFont Name of font used for bold text. | |
85 italicFont Name of font used for italic text. | |
86 boldItalicFont Name of font used for bold, italic text. | |
87 menuFont Name of font used for the menus, used when compiled | |
88 without the |+xfontset| feature | |
89 menuFontSet Name of fontset used for the menus, used when compiled | |
90 with the |+xfontset| feature | |
91 tooltipFont Name of the font used for the tooltip and balloons. | |
92 When compiled with the |+xfontset| feature this is a | |
93 fontset name. | |
94 | |
95 geometry Initial geometry to use for gvim's window (default | |
96 is same size as terminal that started it). | |
97 scrollbarWidth Thickness of scrollbars. | |
98 borderWidth Thickness of border around text area. | |
99 | |
100 A special font for italic, bold, and italic-bold text will only be used if | |
101 the user has specified one via a resource. No attempt is made to guess what | |
102 fonts should be used for these based on the normal text font. | |
103 | |
104 Note that the colors can also be set with the ":highlight" command, using the | |
105 "Normal", "Menu", "Tooltip", and "Scrollbar" groups. Example: > | |
106 :highlight Menu guibg=lightblue | |
107 :highlight Tooltip guibg=yellow | |
108 :highlight Scrollbar guibg=lightblue guifg=blue | |
109 :highlight Normal guibg=grey90 | |
110 < | |
111 *font-sizes* | |
112 Note: All fonts (except for the menu and tooltip) must be of the same size!!! | |
113 If you don't do this, text will disappear or mess up the display. Vim does | |
114 not check the font sizes. It's the size in screen pixels that must be the | |
115 same. Note that some fonts that have the same point size don't have the same | |
116 pixel size! Additionally, the positioning of the fonts must be the same | |
117 (ascent and descent). You can check this with "xlsfonts -l {fontname}". | |
118 | |
236 | 119 If any of these things are also set with Vim commands, e.g. with |
7 | 120 ":set guifont=Screen15", then this will override the X resources (currently |
121 'guifont' is the only option that is supported). | |
122 | |
123 Here is an example of what you might put in your ~/.Xdefaults file: > | |
124 | |
125 Vim*useSchemes: all | |
126 Vim*sgiMode: true | |
127 Vim*useEnhancedFSB: true | |
128 Vim.foreground: Black | |
129 Vim.background: Wheat | |
130 Vim*fontList: 7x13 | |
131 | |
132 The first three of these are standard resources on Silicon Graphics machines | |
133 which make Motif applications look even better, highly recommended! | |
134 | |
135 The "Vim*fontList" is to set the menu font for Motif. Example: > | |
136 Vim*menuBar*fontList: -*-courier-medium-r-*-*-10-*-*-*-*-*-*-* | |
137 | |
138 NOTE: A more portable, and indeed more correct, way to specify the menu font | |
28303
9849df834f1d
patch 8.2.4677: the Athena GUI support is outdated
Bram Moolenaar <Bram@vim.org>
parents:
20753
diff
changeset
|
139 in Motif is through the resource: > |
7 | 140 Vim.menuFont: -*-courier-medium-r-*-*-10-*-*-*-*-*-*-* |
141 Or, when compiled with the |+xfontset| feature: > | |
142 Vim.menuFontSet: -*-courier-medium-r-*-*-10-*-*-*-*-*-*-* | |
143 | |
144 Don't use "Vim*geometry" in the defaults. This will break the menus. Use | |
145 "Vim.geometry" instead. | |
146 | |
147 If you get an error message "Cannot allocate colormap entry for "gray60", | |
148 try adding this to your Vim resources (change the colors to your liking): > | |
149 | |
150 Vim*scrollBackground: Black | |
151 Vim*scrollForeground: Blue | |
152 | |
153 The resources can also be set with arguments to Vim: | |
154 | |
155 argument meaning ~ | |
156 *-gui* | |
157 -display {display} Run vim on {display} *-display* | |
158 -iconic Start vim iconified *-iconic* | |
159 -background {color} Use {color} for the background *-background* | |
160 -bg {color} idem *-bg* | |
161 -foreground {color} Use {color} for normal text *-foreground* | |
162 -fg {color} idem *-fg* | |
163 -ul {color} idem *-ul* | |
164 -font {font} Use {font} for normal text *-font* | |
165 -fn {font} idem *-fn* | |
166 -boldfont {font} Use {font} for bold text *-boldfont* | |
167 -italicfont {font} Use {font} for italic text *-italicfont* | |
168 -menufont {font} Use {font} for menu items *-menufont* | |
169 -menufontset {fontset} Use {fontset} for menu items *-menufontset* | |
170 -mf {font} idem *-mf* | |
171 -geometry {geom} Use {geom} for initial geometry *-geometry* | |
172 -geom {geom} idem, see |-geometry-example| *-geom* | |
173 -borderwidth {width} Use a border width of {width} *-borderwidth* | |
174 -bw {width} idem *-bw* | |
175 *-scrollbarwidth* | |
176 -scrollbarwidth {width} Use a scrollbar width of {width} | |
177 -sw {width} idem *-sw* | |
178 -menuheight {height} Use a menu bar height of {height} *-menuheight* | |
179 -mh {height} idem *-mh* | |
180 NOTE: On Motif the value is ignored, the menu height | |
181 is computed to fit the menus. | |
182 -reverse Use reverse video *-reverse* | |
183 -rv idem *-rv* | |
184 +reverse Don't use reverse video *-+reverse* | |
185 +rv idem *-+rv* | |
186 -xrm {resource} Set the specified resource *-xrm* | |
187 | |
188 Note about reverse video: Vim checks that the result is actually a light text | |
189 on a dark background. The reason is that some X11 versions swap the colors, | |
190 and some don't. These two examples will both give yellow text on a blue | |
191 background: | |
192 gvim -fg Yellow -bg Blue -reverse | |
193 gvim -bg Yellow -fg Blue -reverse | |
194 | |
195 *-geometry-example* | |
196 An example for the geometry argument: > | |
197 gvim -geometry 80x63+8+100 | |
198 This creates a window with 80 columns and 63 lines at position 8 pixels from | |
199 the left and 100 pixels from the top of the screen. | |
200 | |
201 ============================================================================== | |
202 3. Shell Commands *gui-pty* | |
203 | |
204 WARNING: Executing an external command from the GUI will not always work. | |
205 "normal" commands like "ls", "grep" and "make" mostly work fine. Commands | |
206 that require an intelligent terminal like "less" and "ispell" won't work. | |
207 Some may even hang and need to be killed from another terminal. So be | |
208 careful! | |
209 | |
210 There are two ways to do the I/O with a shell command: Pipes and a pseudo-tty. | |
211 The default is to use a pseudo-tty. This should work best on most systems. | |
212 | |
213 Unfortunately, the implementation of the pseudo-tty is different on every Unix | |
214 system. And some systems require root permission. To avoid running into | |
215 problems with a pseudo-tty when you least expect it, test it when not editing | |
216 a file. Be prepared to "kill" the started command or Vim. Commands like | |
217 ":r !cat" may hang! | |
218 | |
219 If using a pseudo-tty does not work for you, reset the 'guipty' option: > | |
220 | |
221 :set noguipty | |
222 | |
223 Using a pipe should work on any Unix system, but there are disadvantages: | |
224 - Some shell commands will notice that a pipe is being used and behave | |
225 differently. E.g., ":!ls" will list the files in one column. | |
226 - The ":sh" command won't show a prompt, although it will sort of work. | |
227 - When using ":make" it's not possible to interrupt with a CTRL-C. | |
228 | |
229 Typeahead while the external command is running is often lost. This happens | |
230 both with a pipe and a pseudo-tty. This is a known problem, but it seems it | |
231 can't be fixed (or at least, it's very difficult). | |
232 | |
233 *gui-pty-erase* | |
234 When your erase character is wrong for an external command, you should fix | |
235 this in your "~/.cshrc" file, or whatever file your shell uses for | |
236 initializations. For example, when you want to use backspace to delete | |
237 characters, but hitting backspaces produces "^H" instead, try adding this to | |
238 your "~/.cshrc": > | |
239 stty erase ^H | |
240 The ^H is a real CTRL-H, type it as CTRL-V CTRL-H. | |
241 | |
242 ============================================================================== | |
243 4. Various *gui-x11-various* | |
244 | |
245 *gui-x11-printing* | |
246 The "File/Print" menu simply sends the current buffer to "lpr". No options or | |
247 whatever. If you want something else, you can define your own print command. | |
248 For example: > | |
249 | |
250 :10amenu File.Print :w !lpr -Php3 | |
251 :10vmenu File.Print :w !lpr -Php3 | |
252 < | |
253 *X11-icon* | |
28303
9849df834f1d
patch 8.2.4677: the Athena GUI support is outdated
Bram Moolenaar <Bram@vim.org>
parents:
20753
diff
changeset
|
254 Vim uses a black&white icon by default when compiled with Motif. A |
7 | 255 colored Vim icon is included as $VIMRUNTIME/vim32x32.xpm. For GTK+, this is |
256 the builtin icon used. Unfortunately, how you should install it depends on | |
257 your window manager. When you use this, remove the 'i' flag from | |
258 'guioptions', to remove the black&white icon: > | |
259 :set guioptions-=i | |
260 | |
261 If you use one of the fvwm* family of window managers simply add this line to | |
262 your .fvwm2rc configuration file: > | |
263 | |
264 Style "vim" Icon vim32x32.xpm | |
265 | |
266 Make sure the icon file's location is consistent with the window manager's | |
267 ImagePath statement. Either modify the ImagePath from within your .fvwm2rc or | |
268 drop the icon into one the pre-defined directories: > | |
269 | |
270 ImagePath /usr/X11R6/include/X11/pixmaps:/usr/X11R6/include/X11/bitmaps | |
271 | |
272 Note: older versions of fvwm use "IconPath" instead of "ImagePath". | |
273 | |
274 For CDE "dtwm" (a derivative of Motif) add this line in the .Xdefaults: > | |
275 Dtwm*Vim*iconImage: /usr/local/share/vim/vim32x32.xpm | |
276 | |
277 For "mwm" (Motif window manager) the line would be: > | |
278 Mwm*Vim*iconImage: /usr/local/share/vim/vim32x32.xpm | |
279 | |
280 | |
11659
49c12c93abf3
Updated runtime files and translations.
Christian Brabandt <cb@256bit.org>
parents:
10211
diff
changeset
|
281 Mouse Pointers Available in X11 ~ |
49c12c93abf3
Updated runtime files and translations.
Christian Brabandt <cb@256bit.org>
parents:
10211
diff
changeset
|
282 *X11_mouse_shapes* |
7 | 283 By using the |'mouseshape'| option, the mouse pointer can be automatically |
284 changed whenever Vim enters one of its various modes (e.g., Insert or | |
285 Command). Currently, the available pointers are: | |
286 | |
287 arrow an arrow pointing northwest | |
288 beam a I-like vertical bar | |
289 size an arrow pointing up and down | |
290 busy a wristwatch | |
291 blank an invisible pointer | |
292 crosshair a thin "+" sign | |
293 hand1 a dark hand pointing northeast | |
294 hand2 a light hand pointing northwest | |
295 pencil a pencil pointing southeast | |
296 question question_arrow | |
297 right_arrow an arrow pointing northeast | |
298 up_arrow an arrow pointing upwards | |
299 | |
300 Additionally, any of the mouse pointers that are built into X11 may be | |
301 used by specifying an integer from the X11/cursorfont.h include file. | |
302 | |
303 If a name is used that exists on other systems, but not in X11, the default | |
304 "arrow" pointer is used. | |
305 | |
306 ============================================================================== | |
8876
47f17f66da3d
commit https://github.com/vim/vim/commit/03413f44167c4b5cd0012def9bb331e2518c83cf
Christian Brabandt <cb@256bit.org>
parents:
8218
diff
changeset
|
307 5. GTK version *gui-gtk* *GTK+* *GTK* *GTK3* |
7 | 308 |
309 The GTK version of the GUI works a little bit different. | |
310 | |
311 GTK does _not_ use the traditional X resource settings. Thus items in your | |
312 ~/.Xdefaults or app-defaults files are not used. | |
313 Many of the traditional X command line arguments are not supported. (e.g., | |
314 stuff like -bg, -fg, etc). The ones that are supported are: | |
315 | |
316 command line argument resource name meaning ~ | |
317 -fn or -font .font font name for the text | |
318 -geom or -geometry .geometry size of the gvim window | |
319 -rv or -reverse *reverseVideo white text on black background | |
320 -display display to be used | |
321 -fg -foreground {color} foreground color | |
322 -bg -background {color} background color | |
323 | |
324 To set the font, see |'guifont'|. For GTK, there's also a menu option that | |
325 does this. | |
326 | |
327 Additionally, there are these command line arguments, which are handled by GTK | |
328 internally. Look in the GTK documentation for how they are used: | |
329 --sync | |
330 --gdk-debug | |
331 --gdk-no-debug | |
332 --no-xshm (not in GTK+ 2) | |
333 --xim-preedit (not in GTK+ 2) | |
334 --xim-status (not in GTK+ 2) | |
335 --gtk-debug | |
336 --gtk-no-debug | |
337 --g-fatal-warnings | |
338 --gtk-module | |
339 --display (GTK+ counterpart of -display; works the same way.) | |
340 --screen (The screen number; for GTK+ 2.2 multihead support.) | |
341 | |
342 These arguments are ignored when the |+netbeans_intg| feature is used: | |
343 -xrm | |
344 -mf | |
345 | |
346 As for colors, Vim's color settings (for syntax highlighting) is still | |
347 done the traditional Vim way. See |:highlight| for more help. | |
348 | |
349 If you want to set the colors of remaining gui components (e.g., the | |
350 menubar, scrollbar, whatever), those are GTK specific settings and you | |
351 need to set those up in some sort of gtkrc file. You'll have to refer | |
352 to the GTK documentation, however little there is, on how to do this. | |
353 See http://developer.gnome.org/doc/API/2.0/gtk/gtk-Resource-Files.html | |
354 for more information. | |
20753 | 355 *gtk3-slow* |
356 If you are using GTK3 and Vim appears to be slow, try setting the environment | |
357 variable $GDK_RENDERING to "image". | |
7 | 358 |
11659
49c12c93abf3
Updated runtime files and translations.
Christian Brabandt <cb@256bit.org>
parents:
10211
diff
changeset
|
359 |
49c12c93abf3
Updated runtime files and translations.
Christian Brabandt <cb@256bit.org>
parents:
10211
diff
changeset
|
360 Tooltip Colors ~ |
49c12c93abf3
Updated runtime files and translations.
Christian Brabandt <cb@256bit.org>
parents:
10211
diff
changeset
|
361 *gtk-tooltip-colors* |
7 | 362 Example, which sets the tooltip colors to black on light-yellow: > |
363 | |
364 style "tooltips" | |
365 { | |
366 bg[NORMAL] = "#ffffcc" | |
367 fg[NORMAL] = "#000000" | |
368 } | |
369 | |
370 widget "gtk-tooltips*" style "tooltips" | |
371 | |
372 Write this in the file ~/.gtkrc and it will be used by GTK+. For GTK+ 2 | |
373 you might have to use the file ~/.gtkrc-2.0 instead, depending on your | |
374 distribution. | |
375 | |
8218
3456e2ebebd4
commit https://github.com/vim/vim/commit/9892189d2e7ab94b750f99e6da4cbfc3c8014517
Christian Brabandt <cb@256bit.org>
parents:
5697
diff
changeset
|
376 For GTK+ 3, an effect similar to the above can be obtained by adding the |
14668 | 377 following snippet of CSS code to $XDG_HOME_DIR/gtk-3.0/gtk.css (see the next |
378 section): | |
11659
49c12c93abf3
Updated runtime files and translations.
Christian Brabandt <cb@256bit.org>
parents:
10211
diff
changeset
|
379 |
49c12c93abf3
Updated runtime files and translations.
Christian Brabandt <cb@256bit.org>
parents:
10211
diff
changeset
|
380 For GTK+ 3 < 3.20: > |
49c12c93abf3
Updated runtime files and translations.
Christian Brabandt <cb@256bit.org>
parents:
10211
diff
changeset
|
381 |
8218
3456e2ebebd4
commit https://github.com/vim/vim/commit/9892189d2e7ab94b750f99e6da4cbfc3c8014517
Christian Brabandt <cb@256bit.org>
parents:
5697
diff
changeset
|
382 .tooltip { |
3456e2ebebd4
commit https://github.com/vim/vim/commit/9892189d2e7ab94b750f99e6da4cbfc3c8014517
Christian Brabandt <cb@256bit.org>
parents:
5697
diff
changeset
|
383 background-color: #ffffcc; |
3456e2ebebd4
commit https://github.com/vim/vim/commit/9892189d2e7ab94b750f99e6da4cbfc3c8014517
Christian Brabandt <cb@256bit.org>
parents:
5697
diff
changeset
|
384 color: #000000; |
3456e2ebebd4
commit https://github.com/vim/vim/commit/9892189d2e7ab94b750f99e6da4cbfc3c8014517
Christian Brabandt <cb@256bit.org>
parents:
5697
diff
changeset
|
385 } |
3456e2ebebd4
commit https://github.com/vim/vim/commit/9892189d2e7ab94b750f99e6da4cbfc3c8014517
Christian Brabandt <cb@256bit.org>
parents:
5697
diff
changeset
|
386 < |
11659
49c12c93abf3
Updated runtime files and translations.
Christian Brabandt <cb@256bit.org>
parents:
10211
diff
changeset
|
387 For GTK+ 3 >= 3.20: > |
8218
3456e2ebebd4
commit https://github.com/vim/vim/commit/9892189d2e7ab94b750f99e6da4cbfc3c8014517
Christian Brabandt <cb@256bit.org>
parents:
5697
diff
changeset
|
388 |
11659
49c12c93abf3
Updated runtime files and translations.
Christian Brabandt <cb@256bit.org>
parents:
10211
diff
changeset
|
389 tooltip { |
49c12c93abf3
Updated runtime files and translations.
Christian Brabandt <cb@256bit.org>
parents:
10211
diff
changeset
|
390 background-color: #ffffcc; |
49c12c93abf3
Updated runtime files and translations.
Christian Brabandt <cb@256bit.org>
parents:
10211
diff
changeset
|
391 text-shadow: none; |
49c12c93abf3
Updated runtime files and translations.
Christian Brabandt <cb@256bit.org>
parents:
10211
diff
changeset
|
392 } |
49c12c93abf3
Updated runtime files and translations.
Christian Brabandt <cb@256bit.org>
parents:
10211
diff
changeset
|
393 |
49c12c93abf3
Updated runtime files and translations.
Christian Brabandt <cb@256bit.org>
parents:
10211
diff
changeset
|
394 tooltip label { |
49c12c93abf3
Updated runtime files and translations.
Christian Brabandt <cb@256bit.org>
parents:
10211
diff
changeset
|
395 color: #2e3436; |
49c12c93abf3
Updated runtime files and translations.
Christian Brabandt <cb@256bit.org>
parents:
10211
diff
changeset
|
396 } |
49c12c93abf3
Updated runtime files and translations.
Christian Brabandt <cb@256bit.org>
parents:
10211
diff
changeset
|
397 < |
49c12c93abf3
Updated runtime files and translations.
Christian Brabandt <cb@256bit.org>
parents:
10211
diff
changeset
|
398 |
49c12c93abf3
Updated runtime files and translations.
Christian Brabandt <cb@256bit.org>
parents:
10211
diff
changeset
|
399 A Quick Look at GTK+ CSS ~ |
49c12c93abf3
Updated runtime files and translations.
Christian Brabandt <cb@256bit.org>
parents:
10211
diff
changeset
|
400 *gtk-css* |
49c12c93abf3
Updated runtime files and translations.
Christian Brabandt <cb@256bit.org>
parents:
10211
diff
changeset
|
401 The contents of this subsection apply to GTK+ 3.20 or later which provides |
49c12c93abf3
Updated runtime files and translations.
Christian Brabandt <cb@256bit.org>
parents:
10211
diff
changeset
|
402 stable support for GTK+ CSS: |
49c12c93abf3
Updated runtime files and translations.
Christian Brabandt <cb@256bit.org>
parents:
10211
diff
changeset
|
403 |
49c12c93abf3
Updated runtime files and translations.
Christian Brabandt <cb@256bit.org>
parents:
10211
diff
changeset
|
404 https://developer.gnome.org/gtk3/stable/theming.html |
49c12c93abf3
Updated runtime files and translations.
Christian Brabandt <cb@256bit.org>
parents:
10211
diff
changeset
|
405 |
49c12c93abf3
Updated runtime files and translations.
Christian Brabandt <cb@256bit.org>
parents:
10211
diff
changeset
|
406 GTK+ uses CSS for styling and layout of widgets. In this subsection, we'll |
49c12c93abf3
Updated runtime files and translations.
Christian Brabandt <cb@256bit.org>
parents:
10211
diff
changeset
|
407 have a quick look at GTK+ CSS through simple, illustrative examples. |
49c12c93abf3
Updated runtime files and translations.
Christian Brabandt <cb@256bit.org>
parents:
10211
diff
changeset
|
408 |
14668 | 409 You can usually edit the config with: > |
410 vim $HOME/.config/gtk-3.0/gtk.css | |
411 | |
412 | |
11659
49c12c93abf3
Updated runtime files and translations.
Christian Brabandt <cb@256bit.org>
parents:
10211
diff
changeset
|
413 Example 1. Empty Space Adjustment ~ |
49c12c93abf3
Updated runtime files and translations.
Christian Brabandt <cb@256bit.org>
parents:
10211
diff
changeset
|
414 |
49c12c93abf3
Updated runtime files and translations.
Christian Brabandt <cb@256bit.org>
parents:
10211
diff
changeset
|
415 By default, the toolbar and the tabline of the GTK+ 3 GUI are somewhat larger |
49c12c93abf3
Updated runtime files and translations.
Christian Brabandt <cb@256bit.org>
parents:
10211
diff
changeset
|
416 than those of the GTK+ 2 GUI. Some people may want to make them look similar |
49c12c93abf3
Updated runtime files and translations.
Christian Brabandt <cb@256bit.org>
parents:
10211
diff
changeset
|
417 to the GTK+ 2 GUI in size. |
49c12c93abf3
Updated runtime files and translations.
Christian Brabandt <cb@256bit.org>
parents:
10211
diff
changeset
|
418 |
49c12c93abf3
Updated runtime files and translations.
Christian Brabandt <cb@256bit.org>
parents:
10211
diff
changeset
|
419 To do that, we'll try reducing empty space around icons and labels that looks |
49c12c93abf3
Updated runtime files and translations.
Christian Brabandt <cb@256bit.org>
parents:
10211
diff
changeset
|
420 apparently superfluous. |
49c12c93abf3
Updated runtime files and translations.
Christian Brabandt <cb@256bit.org>
parents:
10211
diff
changeset
|
421 |
49c12c93abf3
Updated runtime files and translations.
Christian Brabandt <cb@256bit.org>
parents:
10211
diff
changeset
|
422 Add the following lines to $XDG_HOME_DIR/gtk-3.0/gtk.css (usually, |
49c12c93abf3
Updated runtime files and translations.
Christian Brabandt <cb@256bit.org>
parents:
10211
diff
changeset
|
423 $HOME/.config/gtk-3.0/gtk.css): > |
49c12c93abf3
Updated runtime files and translations.
Christian Brabandt <cb@256bit.org>
parents:
10211
diff
changeset
|
424 |
49c12c93abf3
Updated runtime files and translations.
Christian Brabandt <cb@256bit.org>
parents:
10211
diff
changeset
|
425 toolbar button { |
49c12c93abf3
Updated runtime files and translations.
Christian Brabandt <cb@256bit.org>
parents:
10211
diff
changeset
|
426 margin-top: -2px; |
49c12c93abf3
Updated runtime files and translations.
Christian Brabandt <cb@256bit.org>
parents:
10211
diff
changeset
|
427 margin-right: 0px; |
49c12c93abf3
Updated runtime files and translations.
Christian Brabandt <cb@256bit.org>
parents:
10211
diff
changeset
|
428 margin-bottom: -2px; |
49c12c93abf3
Updated runtime files and translations.
Christian Brabandt <cb@256bit.org>
parents:
10211
diff
changeset
|
429 margin-left: 0px; |
49c12c93abf3
Updated runtime files and translations.
Christian Brabandt <cb@256bit.org>
parents:
10211
diff
changeset
|
430 |
49c12c93abf3
Updated runtime files and translations.
Christian Brabandt <cb@256bit.org>
parents:
10211
diff
changeset
|
431 padding-top: 0px; |
49c12c93abf3
Updated runtime files and translations.
Christian Brabandt <cb@256bit.org>
parents:
10211
diff
changeset
|
432 padding-right: 0px; |
49c12c93abf3
Updated runtime files and translations.
Christian Brabandt <cb@256bit.org>
parents:
10211
diff
changeset
|
433 padding-bottom: 0px; |
49c12c93abf3
Updated runtime files and translations.
Christian Brabandt <cb@256bit.org>
parents:
10211
diff
changeset
|
434 padding-left: 0px |
49c12c93abf3
Updated runtime files and translations.
Christian Brabandt <cb@256bit.org>
parents:
10211
diff
changeset
|
435 } |
49c12c93abf3
Updated runtime files and translations.
Christian Brabandt <cb@256bit.org>
parents:
10211
diff
changeset
|
436 |
49c12c93abf3
Updated runtime files and translations.
Christian Brabandt <cb@256bit.org>
parents:
10211
diff
changeset
|
437 notebook tab { |
49c12c93abf3
Updated runtime files and translations.
Christian Brabandt <cb@256bit.org>
parents:
10211
diff
changeset
|
438 margin-top: -1px; |
49c12c93abf3
Updated runtime files and translations.
Christian Brabandt <cb@256bit.org>
parents:
10211
diff
changeset
|
439 margin-right: 3px; |
49c12c93abf3
Updated runtime files and translations.
Christian Brabandt <cb@256bit.org>
parents:
10211
diff
changeset
|
440 margin-bottom: -1px; |
49c12c93abf3
Updated runtime files and translations.
Christian Brabandt <cb@256bit.org>
parents:
10211
diff
changeset
|
441 margin-left: 3px; |
7 | 442 |
11659
49c12c93abf3
Updated runtime files and translations.
Christian Brabandt <cb@256bit.org>
parents:
10211
diff
changeset
|
443 padding-top: 0px; |
49c12c93abf3
Updated runtime files and translations.
Christian Brabandt <cb@256bit.org>
parents:
10211
diff
changeset
|
444 padding-right: 0px; |
49c12c93abf3
Updated runtime files and translations.
Christian Brabandt <cb@256bit.org>
parents:
10211
diff
changeset
|
445 padding-bottom: 0px; |
49c12c93abf3
Updated runtime files and translations.
Christian Brabandt <cb@256bit.org>
parents:
10211
diff
changeset
|
446 padding-left: 0px |
49c12c93abf3
Updated runtime files and translations.
Christian Brabandt <cb@256bit.org>
parents:
10211
diff
changeset
|
447 } |
49c12c93abf3
Updated runtime files and translations.
Christian Brabandt <cb@256bit.org>
parents:
10211
diff
changeset
|
448 < |
49c12c93abf3
Updated runtime files and translations.
Christian Brabandt <cb@256bit.org>
parents:
10211
diff
changeset
|
449 Since it's a CSS, they can be rewritten using shorthand: > |
49c12c93abf3
Updated runtime files and translations.
Christian Brabandt <cb@256bit.org>
parents:
10211
diff
changeset
|
450 |
49c12c93abf3
Updated runtime files and translations.
Christian Brabandt <cb@256bit.org>
parents:
10211
diff
changeset
|
451 toolbar button { |
49c12c93abf3
Updated runtime files and translations.
Christian Brabandt <cb@256bit.org>
parents:
10211
diff
changeset
|
452 margin: -2px 0px; |
49c12c93abf3
Updated runtime files and translations.
Christian Brabandt <cb@256bit.org>
parents:
10211
diff
changeset
|
453 padding: 0px; |
49c12c93abf3
Updated runtime files and translations.
Christian Brabandt <cb@256bit.org>
parents:
10211
diff
changeset
|
454 } |
49c12c93abf3
Updated runtime files and translations.
Christian Brabandt <cb@256bit.org>
parents:
10211
diff
changeset
|
455 |
49c12c93abf3
Updated runtime files and translations.
Christian Brabandt <cb@256bit.org>
parents:
10211
diff
changeset
|
456 notebook tab { |
49c12c93abf3
Updated runtime files and translations.
Christian Brabandt <cb@256bit.org>
parents:
10211
diff
changeset
|
457 margin: -1px 3px; |
49c12c93abf3
Updated runtime files and translations.
Christian Brabandt <cb@256bit.org>
parents:
10211
diff
changeset
|
458 padding: 0px |
49c12c93abf3
Updated runtime files and translations.
Christian Brabandt <cb@256bit.org>
parents:
10211
diff
changeset
|
459 } |
49c12c93abf3
Updated runtime files and translations.
Christian Brabandt <cb@256bit.org>
parents:
10211
diff
changeset
|
460 < |
49c12c93abf3
Updated runtime files and translations.
Christian Brabandt <cb@256bit.org>
parents:
10211
diff
changeset
|
461 Note: You might want to use 'toolbariconsize' to adjust the icon size, too. |
49c12c93abf3
Updated runtime files and translations.
Christian Brabandt <cb@256bit.org>
parents:
10211
diff
changeset
|
462 |
49c12c93abf3
Updated runtime files and translations.
Christian Brabandt <cb@256bit.org>
parents:
10211
diff
changeset
|
463 Note: Depending on the icon theme and/or the font in use, some extra tweaks |
49c12c93abf3
Updated runtime files and translations.
Christian Brabandt <cb@256bit.org>
parents:
10211
diff
changeset
|
464 may be needed for a satisfactory result. |
49c12c93abf3
Updated runtime files and translations.
Christian Brabandt <cb@256bit.org>
parents:
10211
diff
changeset
|
465 |
49c12c93abf3
Updated runtime files and translations.
Christian Brabandt <cb@256bit.org>
parents:
10211
diff
changeset
|
466 Note: In addition to margin and padding, you can use border. For details, |
49c12c93abf3
Updated runtime files and translations.
Christian Brabandt <cb@256bit.org>
parents:
10211
diff
changeset
|
467 refer to the box model of CSS, e.g., |
49c12c93abf3
Updated runtime files and translations.
Christian Brabandt <cb@256bit.org>
parents:
10211
diff
changeset
|
468 |
49c12c93abf3
Updated runtime files and translations.
Christian Brabandt <cb@256bit.org>
parents:
10211
diff
changeset
|
469 https://www.w3schools.com/css/css_boxmodel.asp |
49c12c93abf3
Updated runtime files and translations.
Christian Brabandt <cb@256bit.org>
parents:
10211
diff
changeset
|
470 |
49c12c93abf3
Updated runtime files and translations.
Christian Brabandt <cb@256bit.org>
parents:
10211
diff
changeset
|
471 Example 2. More Than Just Colors ~ |
49c12c93abf3
Updated runtime files and translations.
Christian Brabandt <cb@256bit.org>
parents:
10211
diff
changeset
|
472 |
49c12c93abf3
Updated runtime files and translations.
Christian Brabandt <cb@256bit.org>
parents:
10211
diff
changeset
|
473 GTK+ CSS supports gradients as well: > |
49c12c93abf3
Updated runtime files and translations.
Christian Brabandt <cb@256bit.org>
parents:
10211
diff
changeset
|
474 |
49c12c93abf3
Updated runtime files and translations.
Christian Brabandt <cb@256bit.org>
parents:
10211
diff
changeset
|
475 tooltip { |
49c12c93abf3
Updated runtime files and translations.
Christian Brabandt <cb@256bit.org>
parents:
10211
diff
changeset
|
476 background-image: -gtk-gradient(linear, |
49c12c93abf3
Updated runtime files and translations.
Christian Brabandt <cb@256bit.org>
parents:
10211
diff
changeset
|
477 0 0, 0 1, |
49c12c93abf3
Updated runtime files and translations.
Christian Brabandt <cb@256bit.org>
parents:
10211
diff
changeset
|
478 color-stop(0, #344752), |
49c12c93abf3
Updated runtime files and translations.
Christian Brabandt <cb@256bit.org>
parents:
10211
diff
changeset
|
479 color-stop(0.5, #546772), |
49c12c93abf3
Updated runtime files and translations.
Christian Brabandt <cb@256bit.org>
parents:
10211
diff
changeset
|
480 color-stop(1, #243742)); |
49c12c93abf3
Updated runtime files and translations.
Christian Brabandt <cb@256bit.org>
parents:
10211
diff
changeset
|
481 } |
49c12c93abf3
Updated runtime files and translations.
Christian Brabandt <cb@256bit.org>
parents:
10211
diff
changeset
|
482 |
49c12c93abf3
Updated runtime files and translations.
Christian Brabandt <cb@256bit.org>
parents:
10211
diff
changeset
|
483 tooltip label { |
49c12c93abf3
Updated runtime files and translations.
Christian Brabandt <cb@256bit.org>
parents:
10211
diff
changeset
|
484 color: #f3f3f3; |
49c12c93abf3
Updated runtime files and translations.
Christian Brabandt <cb@256bit.org>
parents:
10211
diff
changeset
|
485 } |
49c12c93abf3
Updated runtime files and translations.
Christian Brabandt <cb@256bit.org>
parents:
10211
diff
changeset
|
486 < |
49c12c93abf3
Updated runtime files and translations.
Christian Brabandt <cb@256bit.org>
parents:
10211
diff
changeset
|
487 Gradients can be used to make a GUI element visually distinguishable from |
49c12c93abf3
Updated runtime files and translations.
Christian Brabandt <cb@256bit.org>
parents:
10211
diff
changeset
|
488 others without relying on high contrast. Accordingly, effective use of them is |
49c12c93abf3
Updated runtime files and translations.
Christian Brabandt <cb@256bit.org>
parents:
10211
diff
changeset
|
489 a useful technique to give a theme a sense of unity in color and luminance. |
49c12c93abf3
Updated runtime files and translations.
Christian Brabandt <cb@256bit.org>
parents:
10211
diff
changeset
|
490 |
49c12c93abf3
Updated runtime files and translations.
Christian Brabandt <cb@256bit.org>
parents:
10211
diff
changeset
|
491 Note: Theming can be difficult since it must make every application look |
49c12c93abf3
Updated runtime files and translations.
Christian Brabandt <cb@256bit.org>
parents:
10211
diff
changeset
|
492 equally good; making a single application more charming often gets others |
49c12c93abf3
Updated runtime files and translations.
Christian Brabandt <cb@256bit.org>
parents:
10211
diff
changeset
|
493 unexpectedly less attractive or even deteriorates their usability. Keep this |
49c12c93abf3
Updated runtime files and translations.
Christian Brabandt <cb@256bit.org>
parents:
10211
diff
changeset
|
494 in mind always when you try improving a theme. |
49c12c93abf3
Updated runtime files and translations.
Christian Brabandt <cb@256bit.org>
parents:
10211
diff
changeset
|
495 |
49c12c93abf3
Updated runtime files and translations.
Christian Brabandt <cb@256bit.org>
parents:
10211
diff
changeset
|
496 |
14945 | 497 Example 3. border color ~ |
14668 | 498 |
499 To eliminate borders when maximized: > | |
500 | |
501 @define-color bg_color #1B2B34; | |
502 #vim-main-window { | |
503 background-color: @bg_color; | |
504 } | |
505 | |
506 | |
11659
49c12c93abf3
Updated runtime files and translations.
Christian Brabandt <cb@256bit.org>
parents:
10211
diff
changeset
|
507 Using Vim as a GTK+ plugin ~ |
49c12c93abf3
Updated runtime files and translations.
Christian Brabandt <cb@256bit.org>
parents:
10211
diff
changeset
|
508 *gui-gtk-socketid* |
7 | 509 When the GTK+ version of Vim starts up normally, it creates its own top level |
510 window (technically, a 'GtkWindow'). GTK+ provides an embedding facility with | |
511 its GtkSocket and GtkPlug widgets. If one GTK+ application creates a | |
512 GtkSocket widget in one of its windows, an entirely different GTK+ application | |
513 may embed itself into the first application by creating a top-level GtkPlug | |
514 widget using the socket's ID. | |
515 | |
516 If you pass Vim the command-line option '--socketid' with a decimal or | |
517 hexadecimal value, Vim will create a GtkPlug widget using that value instead | |
518 of the normal GtkWindow. This enables Vim to act as a GTK+ plugin. | |
519 | |
520 This really is a programmer's interface, and is of no use without a supporting | |
521 application to spawn the Vim correctly. For more details on GTK+ sockets, see | |
522 http://www.gtk.org/api/ | |
523 | |
524 Note that this feature requires the latest GTK version. GTK 1.2.10 still has | |
525 a small problem. The socket feature has not yet been tested with GTK+ 2 -- | |
526 feel free to volunteer. | |
527 | |
528 ============================================================================== | |
529 6. GNOME version *gui-gnome* *Gnome* *GNOME* | |
530 | |
531 The GNOME GUI works just like the GTK+ version. See |GTK+| above for how it | |
532 works. It looks a bit different though, and implements one important feature | |
533 that's not available in the plain GTK+ GUI: Interaction with the session | |
534 manager. |gui-gnome-session| | |
535 | |
536 These are the different looks: | |
537 - Uses GNOME dialogs (GNOME 1 only). The GNOME 2 GUI uses the same nice | |
538 dialogs as the GTK+ 2 version. | |
539 - Uses the GNOME dock, so that the toolbar and menubar can be moved to | |
540 different locations other than the top (e.g., the toolbar can be placed on | |
541 the left, right, top, or bottom). The placement of the menubar and | |
542 toolbar is only saved in the GNOME 2 version. | |
543 - That means the menubar and toolbar handles are back! Yeah! And the | |
544 resizing grid still works too. | |
545 | |
1121 | 546 GNOME is compiled with if it was found by configure and the |
547 --enable-gnome-check argument was used. | |
548 | |
9975
03fa8a51e9dc
commit https://github.com/vim/vim/commit/e4a3bcf28d92d0bde9ca227ccb40d401038185e5
Christian Brabandt <cb@256bit.org>
parents:
8876
diff
changeset
|
549 Note: Avoid use of --enable-gnome-check with GTK+ 3 GUI build. The |
03fa8a51e9dc
commit https://github.com/vim/vim/commit/e4a3bcf28d92d0bde9ca227ccb40d401038185e5
Christian Brabandt <cb@256bit.org>
parents:
8876
diff
changeset
|
550 functionality mentioned above is consolidated in GTK+ 3. |
03fa8a51e9dc
commit https://github.com/vim/vim/commit/e4a3bcf28d92d0bde9ca227ccb40d401038185e5
Christian Brabandt <cb@256bit.org>
parents:
8876
diff
changeset
|
551 |
7 | 552 |
11659
49c12c93abf3
Updated runtime files and translations.
Christian Brabandt <cb@256bit.org>
parents:
10211
diff
changeset
|
553 GNOME session support ~ |
49c12c93abf3
Updated runtime files and translations.
Christian Brabandt <cb@256bit.org>
parents:
10211
diff
changeset
|
554 *gui-gnome-session* *gnome-session* |
7 | 555 On logout, Vim shows the well-known exit confirmation dialog if any buffers |
556 are modified. Clicking [Cancel] will stop the logout process. Otherwise the | |
557 current session is stored to disk by using the |:mksession| command, and | |
558 restored the next time you log in. | |
559 | |
560 The GNOME session support should also work with the KDE session manager. | |
561 If you are experiencing any problems please report them as bugs. | |
562 | |
563 Note: The automatic session save works entirely transparent, in order to | |
564 avoid conflicts with your own session files, scripts and autocommands. That | |
565 means in detail: | |
566 - The session file is stored to a separate directory (usually $HOME/.gnome2). | |
567 - 'sessionoptions' is ignored, and a hardcoded set of appropriate flags is | |
568 used instead: > | |
1621 | 569 blank,curdir,folds,globals,help,options,tabpages,winsize |
7 | 570 - The internal variable |v:this_session| is not changed when storing the |
571 session. Also, it is restored to its old value when logging in again. | |
572 | |
573 The position and size of the GUI window is not saved by Vim since doing so | |
574 is the window manager's job. But if compiled with GTK+ 2 support, Vim helps | |
575 the WM to identify the window by restoring the window role (using the |--role| | |
576 command line argument). | |
577 | |
578 ============================================================================== | |
12 | 579 7. KDE version *gui-kde* *kde* *KDE* *KVim* |
1121 | 580 *gui-x11-kde* |
574 | 581 There is no KDE version of Vim. There has been some work on a port using the |
582 Qt toolkit, but it never worked properly and it has been abandoned. Work | |
34242
2dae3f0bfa53
runtime(doc): Update help for Wayland support
Christian Brabandt <cb@256bit.org>
parents:
34057
diff
changeset
|
583 continues on Yzis: https://github.com/chrizel/Yzis but it seems also |
2dae3f0bfa53
runtime(doc): Update help for Wayland support
Christian Brabandt <cb@256bit.org>
parents:
34057
diff
changeset
|
584 abandoned. |
11 | 585 |
586 ============================================================================== | |
587 8. Compiling *gui-x11-compiling* | |
7 | 588 |
9975
03fa8a51e9dc
commit https://github.com/vim/vim/commit/e4a3bcf28d92d0bde9ca227ccb40d401038185e5
Christian Brabandt <cb@256bit.org>
parents:
8876
diff
changeset
|
589 If using X11, Vim's configure will by default first try to find the necessary |
03fa8a51e9dc
commit https://github.com/vim/vim/commit/e4a3bcf28d92d0bde9ca227ccb40d401038185e5
Christian Brabandt <cb@256bit.org>
parents:
8876
diff
changeset
|
590 GTK+ files on your system. When both GTK+ 2 and GTK+ 3 are available, GTK+ 2 |
03fa8a51e9dc
commit https://github.com/vim/vim/commit/e4a3bcf28d92d0bde9ca227ccb40d401038185e5
Christian Brabandt <cb@256bit.org>
parents:
8876
diff
changeset
|
591 will be chosen unless --enable-gui=gtk3 is passed explicitly to configure. |
03fa8a51e9dc
commit https://github.com/vim/vim/commit/e4a3bcf28d92d0bde9ca227ccb40d401038185e5
Christian Brabandt <cb@256bit.org>
parents:
8876
diff
changeset
|
592 |
03fa8a51e9dc
commit https://github.com/vim/vim/commit/e4a3bcf28d92d0bde9ca227ccb40d401038185e5
Christian Brabandt <cb@256bit.org>
parents:
8876
diff
changeset
|
593 If the GTK+ files cannot be found, then the Motif files will be searched for. |
28303
9849df834f1d
patch 8.2.4677: the Athena GUI support is outdated
Bram Moolenaar <Bram@vim.org>
parents:
20753
diff
changeset
|
594 If both fail, the GUI will be disabled. |
9975
03fa8a51e9dc
commit https://github.com/vim/vim/commit/e4a3bcf28d92d0bde9ca227ccb40d401038185e5
Christian Brabandt <cb@256bit.org>
parents:
8876
diff
changeset
|
595 |
03fa8a51e9dc
commit https://github.com/vim/vim/commit/e4a3bcf28d92d0bde9ca227ccb40d401038185e5
Christian Brabandt <cb@256bit.org>
parents:
8876
diff
changeset
|
596 For GTK+, Vim's configuration process uses pkg-config(1) to check if the |
03fa8a51e9dc
commit https://github.com/vim/vim/commit/e4a3bcf28d92d0bde9ca227ccb40d401038185e5
Christian Brabandt <cb@256bit.org>
parents:
8876
diff
changeset
|
597 GTK+ required for a specified build is properly installed and usable. |
03fa8a51e9dc
commit https://github.com/vim/vim/commit/e4a3bcf28d92d0bde9ca227ccb40d401038185e5
Christian Brabandt <cb@256bit.org>
parents:
8876
diff
changeset
|
598 Accordingly, it is a good idea to make sure before running configure that |
03fa8a51e9dc
commit https://github.com/vim/vim/commit/e4a3bcf28d92d0bde9ca227ccb40d401038185e5
Christian Brabandt <cb@256bit.org>
parents:
8876
diff
changeset
|
599 your system has a working pkg-config together with the .pc file of the |
03fa8a51e9dc
commit https://github.com/vim/vim/commit/e4a3bcf28d92d0bde9ca227ccb40d401038185e5
Christian Brabandt <cb@256bit.org>
parents:
8876
diff
changeset
|
600 required GTK+. For that, say, run the following on the command line to see if |
03fa8a51e9dc
commit https://github.com/vim/vim/commit/e4a3bcf28d92d0bde9ca227ccb40d401038185e5
Christian Brabandt <cb@256bit.org>
parents:
8876
diff
changeset
|
601 your pkg-config works with your GTK+ 2: > |
7 | 602 |
10211
b7da8d4c594c
commit https://github.com/vim/vim/commit/d07969093a9b3051511c478d71c36de6fc33c0d6
Christian Brabandt <cb@256bit.org>
parents:
10198
diff
changeset
|
603 $ pkg-config --modversion gtk+-2.0 |
9975
03fa8a51e9dc
commit https://github.com/vim/vim/commit/e4a3bcf28d92d0bde9ca227ccb40d401038185e5
Christian Brabandt <cb@256bit.org>
parents:
8876
diff
changeset
|
604 |
03fa8a51e9dc
commit https://github.com/vim/vim/commit/e4a3bcf28d92d0bde9ca227ccb40d401038185e5
Christian Brabandt <cb@256bit.org>
parents:
8876
diff
changeset
|
605 Replace gtk+-2.0 with gtk+-3.0 for GTK+ 3. If you get the correct version |
03fa8a51e9dc
commit https://github.com/vim/vim/commit/e4a3bcf28d92d0bde9ca227ccb40d401038185e5
Christian Brabandt <cb@256bit.org>
parents:
8876
diff
changeset
|
606 number of your GTK+, you can proceed; if not, you probably need to do some |
03fa8a51e9dc
commit https://github.com/vim/vim/commit/e4a3bcf28d92d0bde9ca227ccb40d401038185e5
Christian Brabandt <cb@256bit.org>
parents:
8876
diff
changeset
|
607 system administration chores to set up pkg-config and GTK+ correctly. |
7 | 608 |
9975
03fa8a51e9dc
commit https://github.com/vim/vim/commit/e4a3bcf28d92d0bde9ca227ccb40d401038185e5
Christian Brabandt <cb@256bit.org>
parents:
8876
diff
changeset
|
609 The GTK+ 2 GUI is built by default. Therefore, you usually don't need to pass |
03fa8a51e9dc
commit https://github.com/vim/vim/commit/e4a3bcf28d92d0bde9ca227ccb40d401038185e5
Christian Brabandt <cb@256bit.org>
parents:
8876
diff
changeset
|
610 any options such as --enable-gui=gtk2 to configure and build that. |
03fa8a51e9dc
commit https://github.com/vim/vim/commit/e4a3bcf28d92d0bde9ca227ccb40d401038185e5
Christian Brabandt <cb@256bit.org>
parents:
8876
diff
changeset
|
611 |
03fa8a51e9dc
commit https://github.com/vim/vim/commit/e4a3bcf28d92d0bde9ca227ccb40d401038185e5
Christian Brabandt <cb@256bit.org>
parents:
8876
diff
changeset
|
612 Optionally, the GTK+ 2 GUI can consolidate the GNOME 2 support. This support |
03fa8a51e9dc
commit https://github.com/vim/vim/commit/e4a3bcf28d92d0bde9ca227ccb40d401038185e5
Christian Brabandt <cb@256bit.org>
parents:
8876
diff
changeset
|
613 is enabled by passing --enable-gnome-check to configure. |
03fa8a51e9dc
commit https://github.com/vim/vim/commit/e4a3bcf28d92d0bde9ca227ccb40d401038185e5
Christian Brabandt <cb@256bit.org>
parents:
8876
diff
changeset
|
614 |
03fa8a51e9dc
commit https://github.com/vim/vim/commit/e4a3bcf28d92d0bde9ca227ccb40d401038185e5
Christian Brabandt <cb@256bit.org>
parents:
8876
diff
changeset
|
615 If you want to build the GTK+ 3 GUI, you have to pass --enable-gui=gtk3 |
03fa8a51e9dc
commit https://github.com/vim/vim/commit/e4a3bcf28d92d0bde9ca227ccb40d401038185e5
Christian Brabandt <cb@256bit.org>
parents:
8876
diff
changeset
|
616 explicitly to configure, and avoid passing --enable-gnome-check to that, as |
03fa8a51e9dc
commit https://github.com/vim/vim/commit/e4a3bcf28d92d0bde9ca227ccb40d401038185e5
Christian Brabandt <cb@256bit.org>
parents:
8876
diff
changeset
|
617 the functionality of the GNOME 2 support has already been consolidated in |
03fa8a51e9dc
commit https://github.com/vim/vim/commit/e4a3bcf28d92d0bde9ca227ccb40d401038185e5
Christian Brabandt <cb@256bit.org>
parents:
8876
diff
changeset
|
618 GTK+ 3. |
7 | 619 |
28303
9849df834f1d
patch 8.2.4677: the Athena GUI support is outdated
Bram Moolenaar <Bram@vim.org>
parents:
20753
diff
changeset
|
620 Otherwise, if you are using Motif, when you have the Motif files in a |
9849df834f1d
patch 8.2.4677: the Athena GUI support is outdated
Bram Moolenaar <Bram@vim.org>
parents:
20753
diff
changeset
|
621 directory where configure doesn't look, edit the Makefile to enter the names |
9849df834f1d
patch 8.2.4677: the Athena GUI support is outdated
Bram Moolenaar <Bram@vim.org>
parents:
20753
diff
changeset
|
622 of the directories. Search for "GUI_INC_LOC" for an example to set |
9849df834f1d
patch 8.2.4677: the Athena GUI support is outdated
Bram Moolenaar <Bram@vim.org>
parents:
20753
diff
changeset
|
623 the Motif directories. |
7 | 624 |
625 *gui-x11-gtk* | |
9975
03fa8a51e9dc
commit https://github.com/vim/vim/commit/e4a3bcf28d92d0bde9ca227ccb40d401038185e5
Christian Brabandt <cb@256bit.org>
parents:
8876
diff
changeset
|
626 Currently, Vim supports both GTK+ 2 and GTK+ 3. |
03fa8a51e9dc
commit https://github.com/vim/vim/commit/e4a3bcf28d92d0bde9ca227ccb40d401038185e5
Christian Brabandt <cb@256bit.org>
parents:
8876
diff
changeset
|
627 |
03fa8a51e9dc
commit https://github.com/vim/vim/commit/e4a3bcf28d92d0bde9ca227ccb40d401038185e5
Christian Brabandt <cb@256bit.org>
parents:
8876
diff
changeset
|
628 The GTK+ 2 GUI requires GTK+ 2.2 or later. |
7 | 629 |
9975
03fa8a51e9dc
commit https://github.com/vim/vim/commit/e4a3bcf28d92d0bde9ca227ccb40d401038185e5
Christian Brabandt <cb@256bit.org>
parents:
8876
diff
changeset
|
630 Although the GTK+ 3 GUI is written in such a way that the source code can be |
03fa8a51e9dc
commit https://github.com/vim/vim/commit/e4a3bcf28d92d0bde9ca227ccb40d401038185e5
Christian Brabandt <cb@256bit.org>
parents:
8876
diff
changeset
|
631 compiled against all versions of the 3.x series, we recommend GTK+ 3.10 or |
03fa8a51e9dc
commit https://github.com/vim/vim/commit/e4a3bcf28d92d0bde9ca227ccb40d401038185e5
Christian Brabandt <cb@256bit.org>
parents:
8876
diff
changeset
|
632 later because of its substantial implementation changes in redraw done at |
03fa8a51e9dc
commit https://github.com/vim/vim/commit/e4a3bcf28d92d0bde9ca227ccb40d401038185e5
Christian Brabandt <cb@256bit.org>
parents:
8876
diff
changeset
|
633 that version. |
7 | 634 |
635 *gui-x11-motif* | |
636 For Motif, you need at least Motif version 1.2 and/or X11R5. Motif 2.0 and | |
637 X11R6 are OK. Motif 1.1 and X11R4 might work, no guarantee (there may be a | |
638 few problems, but you might make it compile and run with a bit of work, please | |
35025
6fb237b639ac
runtime(doc): update documentation
Christian Brabandt <cb@256bit.org>
parents:
34244
diff
changeset
|
639 send patches if you do). The newest releases of LessTif have been reported to |
6fb237b639ac
runtime(doc): update documentation
Christian Brabandt <cb@256bit.org>
parents:
34244
diff
changeset
|
640 work fine too. |
7 | 641 |
28303
9849df834f1d
patch 8.2.4677: the Athena GUI support is outdated
Bram Moolenaar <Bram@vim.org>
parents:
20753
diff
changeset
|
642 *gui-x11-athena* *gui-x11-neXtaw* |
9849df834f1d
patch 8.2.4677: the Athena GUI support is outdated
Bram Moolenaar <Bram@vim.org>
parents:
20753
diff
changeset
|
643 Support for the Athena GUI and neXtaw was removed in patch 8.2.4677. |
7 | 644 |
645 *gui-x11-misc* | |
28303
9849df834f1d
patch 8.2.4677: the Athena GUI support is outdated
Bram Moolenaar <Bram@vim.org>
parents:
20753
diff
changeset
|
646 In general, do not try to mix files from different GTK+, Motif and X11 |
7 | 647 versions. This will cause problems. For example, using header files for |
648 X11R5 with a library for X11R6 probably doesn't work (although the linking | |
649 won't give an error message, Vim will crash later). | |
650 | |
34242
2dae3f0bfa53
runtime(doc): Update help for Wayland support
Christian Brabandt <cb@256bit.org>
parents:
34057
diff
changeset
|
651 *gui-wayland* |
2dae3f0bfa53
runtime(doc): Update help for Wayland support
Christian Brabandt <cb@256bit.org>
parents:
34057
diff
changeset
|
652 Initial support for the Wayland display server protocol has landed in patch |
34244
d15d40bf532b
runtime(doc): correct Vim patch for Wayland support
Christian Brabandt <cb@256bit.org>
parents:
34242
diff
changeset
|
653 9.1.0064. To enable it, you need to set the environment variable |
34242
2dae3f0bfa53
runtime(doc): Update help for Wayland support
Christian Brabandt <cb@256bit.org>
parents:
34057
diff
changeset
|
654 "$GVIM_ENABLE_WAYLAND" in your shell. |
2dae3f0bfa53
runtime(doc): Update help for Wayland support
Christian Brabandt <cb@256bit.org>
parents:
34057
diff
changeset
|
655 |
2dae3f0bfa53
runtime(doc): Update help for Wayland support
Christian Brabandt <cb@256bit.org>
parents:
34057
diff
changeset
|
656 Note: The Wayland protocol is subject to some restrictions, so the following |
2dae3f0bfa53
runtime(doc): Update help for Wayland support
Christian Brabandt <cb@256bit.org>
parents:
34057
diff
changeset
|
657 functions won't work: |getwinpos()|, |getwinposx()|, |getwinposy()| and the |
2dae3f0bfa53
runtime(doc): Update help for Wayland support
Christian Brabandt <cb@256bit.org>
parents:
34057
diff
changeset
|
658 |v:windowid| variable won't be available. |
2dae3f0bfa53
runtime(doc): Update help for Wayland support
Christian Brabandt <cb@256bit.org>
parents:
34057
diff
changeset
|
659 |
7 | 660 ============================================================================== |
11 | 661 9. X11 selection mechanism *x11-selection* |
7 | 662 |
663 If using X11, in either the GUI or an xterm with an X11-aware Vim, then Vim | |
664 provides varied access to the X11 selection and clipboard. These are accessed | |
665 by using the two selection registers "* and "+. | |
666 | |
667 X11 provides two basic types of global store, selections and cut-buffers, | |
668 which differ in one important aspect: selections are "owned" by an | |
669 application, and disappear when that application (e.g., Vim) exits, thus | |
670 losing the data, whereas cut-buffers, are stored within the X-server itself | |
671 and remain until written over or the X-server exits (e.g., upon logging out). | |
672 | |
673 The contents of selections are held by the originating application (e.g., upon | |
674 a copy), and only passed on to another application when that other application | |
675 asks for them (e.g., upon a paste). | |
676 | |
677 The contents of cut-buffers are immediately written to, and are then | |
678 accessible directly from the X-server, without contacting the originating | |
679 application. | |
680 | |
681 *quoteplus* *quote+* | |
682 There are three documented X selections: PRIMARY (which is expected to | |
683 represent the current visual selection - as in Vim's Visual mode), SECONDARY | |
684 (which is ill-defined) and CLIPBOARD (which is expected to be used for | |
685 cut, copy and paste operations). | |
686 | |
687 Of these three, Vim uses PRIMARY when reading and writing the "* register | |
688 (hence when the X11 selections are available, Vim sets a default value for | |
689 |'clipboard'| of "autoselect"), and CLIPBOARD when reading and writing the "+ | |
690 register. Vim does not access the SECONDARY selection. | |
691 | |
29412 | 692 This applies both to the GUI and the terminal version. For non-X11 systems |
29450 | 693 the plus and the star register both use the system clipboard. |
29412 | 694 |
7 | 695 Examples: (assuming the default option values) |
11914 | 696 - Select a URL in Visual mode in Vim. Go to your browser and click the |
2033
de5a43c5eedc
Update documentation files.
Bram Moolenaar <bram@zimbu.org>
parents:
1702
diff
changeset
|
697 middle mouse button in the URL text field. The selected text will be |
de5a43c5eedc
Update documentation files.
Bram Moolenaar <bram@zimbu.org>
parents:
1702
diff
changeset
|
698 inserted (hopefully!). Note: in Firefox you can set the |
de5a43c5eedc
Update documentation files.
Bram Moolenaar <bram@zimbu.org>
parents:
1702
diff
changeset
|
699 middlemouse.contentLoadURL preference to true in about:config, then the |
de5a43c5eedc
Update documentation files.
Bram Moolenaar <bram@zimbu.org>
parents:
1702
diff
changeset
|
700 selected URL will be used when pressing middle mouse button in most places |
de5a43c5eedc
Update documentation files.
Bram Moolenaar <bram@zimbu.org>
parents:
1702
diff
changeset
|
701 in the window. |
de5a43c5eedc
Update documentation files.
Bram Moolenaar <bram@zimbu.org>
parents:
1702
diff
changeset
|
702 - Select some text in your browser by dragging with the mouse. Go to Vim and |
7 | 703 press the middle mouse button: The selected text is inserted. |
2033
de5a43c5eedc
Update documentation files.
Bram Moolenaar <bram@zimbu.org>
parents:
1702
diff
changeset
|
704 - Select some text in Vim and do "+y. Go to your browser, select some text in |
de5a43c5eedc
Update documentation files.
Bram Moolenaar <bram@zimbu.org>
parents:
1702
diff
changeset
|
705 a textfield by dragging with the mouse. Now use the right mouse button and |
7 | 706 select "Paste" from the popup menu. The selected text is overwritten by the |
707 text from Vim. | |
708 Note that the text in the "+ register remains available when making a Visual | |
709 selection, which makes other text available in the "* register. That allows | |
710 overwriting selected text. | |
711 *x11-cut-buffer* | |
712 There are, by default, 8 cut-buffers: CUT_BUFFER0 to CUT_BUFFER7. Vim only | |
713 uses CUT_BUFFER0, which is the one that xterm uses by default. | |
714 | |
715 Whenever Vim is about to become unavailable (either via exiting or becoming | |
716 suspended), and thus unable to respond to another application's selection | |
717 request, it writes the contents of any owned selection to CUT_BUFFER0. If the | |
718 "+ CLIPBOARD selection is owned by Vim, then this is written in preference, | |
719 otherwise if the "* PRIMARY selection is owned by Vim, then that is written. | |
720 | |
721 Similarly, when Vim tries to paste from "* or "+ (either explicitly, or, in | |
722 the case of the "* register, when the middle mouse button is clicked), if the | |
723 requested X selection is empty or unavailable, Vim reverts to reading the | |
724 current value of the CUT_BUFFER0. | |
725 | |
726 Note that when text is copied to CUT_BUFFER0 in this way, the type of | |
727 selection (character, line or block) is always lost, even if it is a Vim which | |
728 later pastes it. | |
729 | |
730 Xterm, by default, always writes visible selections to both PRIMARY and | |
731 CUT_BUFFER0. When it pastes, it uses PRIMARY if this is available, or else | |
732 falls back upon CUT_BUFFER0. For this reason, when cutting and pasting | |
733 between Vim and an xterm, you should use the "* register. Xterm doesn't use | |
734 CLIPBOARD, thus the "+ doesn't work with xterm. | |
735 | |
736 Most newer applications will provide their current selection via PRIMARY ("*) | |
737 and use CLIPBOARD ("+) for cut/copy/paste operations. You thus have access to | |
738 both by choosing to use either of the "* or "+ registers. | |
739 | |
740 | |
14421 | 741 vim:tw=78:sw=4:ts=8:noet:ft=help:norl: |